#define _CRT_SECURE_NO_WARNINGS
#include "priority_queue.h"

//void test_priority_queue()
//{
//	gy::priority_queue<int> pq;
//	pq.push(1);
//	pq.push(12);
//	pq.push(9);
//	pq.push(20);
//	pq.push(-9);
//	cout << pq.size() << endl;
//	cout << pq.empty() << endl;
//	while (!pq.empty())
//	{
//		cout << pq.top() << " ";
//		pq.pop();
//	}
//	cout << endl;
//}
//
//int main()
//{
//	test_priority_queue();
//	return 0;
//}
//template <class T>
//class Less
//{
//public:
//	bool operator()(const T& x, const T& y)const
//	{
//		return x < y;
//	}
//};




//template<typename T>
//class Greater
//{
//public:
//	bool operator()(const T& x, const T& y) const
//	{
//		return x > y;
//	}
//};
//int main()
//{
//	Less<int> com1;
//	Greater<int> com2;
//	int a = 1, b = 5;
//	cout << com1(a, b) << endl;
//	cout << com1.operator()(a, b) << endl;
//
//	cout << com2(a, b) << endl;
//	cout << com2.operator()(a, b) << endl;
//	return 0;
//}

//template <class T>
//class LessP
//{
//public:
//	bool operator()(const T& x, const T& y)const
//	{
//		return *x < *y;
//	}
//};
//int main()
//{
//	LessP<int*> com;
//	int a = 1, b = 5;
//	int* p1 = &a;
//	int* p2 = &b;
//	cout << com(p1, p2) << endl;
//	
//	return 0;
//}



void test_priority_queue()
{
	gy::priority_queue<int> pq;
	pq.push(1);
	pq.push(12);
	pq.push(9);
	pq.push(20);
	pq.push(-9);
	cout << pq.size() << endl;
	cout << pq.empty() << endl;
	while (!pq.empty())
	{
		cout << pq.top() << " ";
		pq.pop();
	}
	cout << endl;
}

int main()
{
	test_priority_queue();
	return 0;
}